/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GlobalObservingSystem.Faces;

import GlobalObservingSystem.Mundo.BaseDatos.UsuarioBD;
import GlobalObservingSystem.Mundo.Coordenada;
import GlobalObservingSystem.Mundo.GOS;
import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Email;

/**
 *
 * @author desk
 */
@ManagedBean(name = "faces")
@SessionScoped
public class Faces {

    private String latitude = "24";
    private String longitude = "15";
    private String latitude1 = "25";
    private String longitude1 = "16";
    private Date date1;
    private Date date2;
    public GOS gos;
    private String pronostico;
    private String imagenPronostico;

    /**
     * Get the value of imagenPronostico
     *
     * @return the value of imagenPronostico
     */
    public String getImagenPronostico() {
        return imagenPronostico;
    }

    /**
     * Set the value of imagenPronostico
     *
     * @param imagenPronostico new value of imagenPronostico
     */
    public void setImagenPronostico(String imagenPronostico) {
        this.imagenPronostico = imagenPronostico;
    }

    /**
     * Get the value of pronostico
     *
     * @return the value of pronostico
     */
    public String getPronostico() {
        return pronostico;
    }

    /**
     * Set the value of pronostico
     *
     * @param pronostico new value of pronostico
     */
    public void setPronostico(String pronostico) {
        this.pronostico = pronostico;
    }
    /**
     * Contraseña para logear
     */
    public String pass;
    /**
     * Login
     */
    public String logon;
    //New USER
    /**
     * Tipo del usuario
     */
    public String tipoUsuario = "normal";
    /**
     * Nombre del usuario
     */
    public String name;
    /**
     * Correo del usuario
     */
    protected String mail;

    /**
     * Consctuctor
     */
    public Faces() {
        pass = "";
        logon = "";
        gos = new GOS();

        for (int i = 0; i < 10; i++) {
            System.out.println("!!!!!");

        }
    }

    /**
     * Get the value of mail
     *
     * @return the value of mail
     */
    @NotNull
    @Email(message = "Correo no valido")
    public String getMail() {
        return mail;
    }

    /**
     * Set the value of mail
     *
     * @param mail new value of mail
     */
    public void setMail(String mail) {
        this.mail = mail;
    }

    /**
     * Get the value of name
     *
     * @return the value of name
     */
    public String getName() {
        return name;
    }

    /**
     * Set the value of name
     *
     * @param name new value of name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Get the value of logon
     *
     * @return the value of logon
     */
    public String getLogon() {
        return logon;
    }

    /**
     * Set the value of logon
     *
     * @param logon new value of logon
     */
    public void setLogon(String logon) {
        this.logon = logon;
    }

    /**
     * Get the value of tipoUsuario
     *
     * @return the value of tipoUsuario
     */
    public String getTipoUsuario() {
        return tipoUsuario;
    }

    /**
     * Set the value of tipoUsuario
     *
     * @param tipoUsuario new value of tipoUsuario
     */
    public void setTipoUsuario(String tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }

    /**
     * Get the value of pass
     *
     * @return the value of pass
     */
    public String getPass() {
        return pass;
    }

    /**
     * Set the value of pass
     *
     * @param pass new value of pass
     */
    public void setPass(String pass) {
        this.pass = pass;
    }

    public boolean validarUsuario() {
        return gos.ingresarSistema(logon, pass);
    }

    /**
     * Envia la informacion para logear
     * @return
     */
    public String logear() {

        if (gos.ingresarSistema(logon, pass)) {
            cargarDatosUsuario();
            if (gos.esClimatologo()) {
                return "principal";
            }
            return "principalNormal";
        } else {
            return "usuarioNoValido.xhtml";
        }

    }

    public String crearUsuario() {

        if (gos.existeUsuario(logon)) {
            return "errorExisteUsuario.xhtml";
        }
        if (gos.registrarUsuario(logon, pass, tipoUsuario, name, mail)) {
            return "usuarioCreado.xhtml";
        }
        return "error.xhtml";
    }

    /**
     * 
     * @return
     */
    public String editarUsuario() {

        gos.eliminarUsuario();
        if (gos.registrarUsuario(logon, pass, tipoUsuario, name, mail)) {
            return "usuarioEditado.xhtml";
        }
        return "error.xhtml";
    }

    /**
     * Carga los datos del usuario logeado
     */
    private void cargarDatosUsuario() {
        UsuarioBD usuario = gos.darUsuario();
        name = usuario.getNombre();
        mail = usuario.getEmail();
        tipoUsuario = usuario.getTipoUsuario();
    }

    public String getLatitude1() {
        return latitude1;
    }

    public void setLatitude1(String latitude1) {
        this.latitude1 = latitude1;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public String getLongitude1() {
        return longitude1;
    }

    public void setLongitude1(String longitude1) {
        this.longitude1 = longitude1;
    }

    public void setDate1(Date date) {
        date1 = date;
    }

    public Date getDate1() {
        return date1;
    }

    public void setDate2(Date date) {
        date2 = date;
    }

    public Date getDate2() {
        return date2;
    }

    /**
     * Get the value of posLo
     *
     * @return the value of posLo
     */
    public String getLatitude() {
        return latitude;
    }

    /**
     * Set the value of posLo
     *
     * @param posLo new value of posLo
     */
    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    /**
     * Get the value of posLa
     *
     * @return the value of posLa
     */
    public String getlongitude() {
        return longitude;
    }

    /**
     * Set the value of posLa
     *
     * @param posLa new value of posLa
     */
    public void setlongitude(String longitude) {
        this.longitude = longitude;
    }

    public String imprimir() {


        System.out.println(longitude + "" + latitude);


        return "principal.xhtml";


    }

    public String agregarSitio() {

        gos.suscribirSitio(new Double(latitude), new Double(longitude));
        return "principal.xhtml";
    }

    public String borrarCuenta() {
        boolean b = gos.eliminarUsuario();
        System.out.println(b);
        if (b) {
            return "index.xhtml";
        }
        return "principal.xhtml";
    }

    public void generarPronostico() {
        pronostico = "fin del mundo";
        Coordenada cooLatitud1 = new Coordenada(new Double(latitude));
        Coordenada cooLatitud2 = new Coordenada(new Double(latitude1));
        Coordenada cooLongitud1 = new Coordenada(new Double(longitude));
        Coordenada cooLongitud2 = new Coordenada(new Double(longitude1));

        Date fech = java.sql.Date.valueOf("2010-03-25");


        imagenPronostico = gos.predecirClima(cooLatitud1, cooLongitud1, fech);
        char a = imagenPronostico.charAt(0);
        if (a == '0') {
            pronostico = "fin del mundo";
        }
        if (a == '1') {
            pronostico = "huracan";
        }
        if (a == '2') {
            pronostico = "llovisna-ligera";
        }
        if (a == '3') {
            pronostico = "lluvia";
        }
        if (a == '5') {
            pronostico = "mayor-nublado";
        }
        if (a == '6') {
            pronostico = "niebla";
        }
        if (a == '7') {
            pronostico = "nieve";
        }
        if (a == '8') {
            pronostico = "soleado";
        }
        if (a == '9') {
            pronostico = "sol-lluvia";
        }
        if (a == 'a') {
            pronostico = "tormenta";
        }
        if (a == 'b') {
            pronostico = "tormenta-electrica";
        }
        if (a == 'c') {
            pronostico = "tsunami";
        }



    }

    public String reporte() {

        Coordenada cooLatitud1 = new Coordenada(new Double(latitude));
        Coordenada cooLatitud2 = new Coordenada(new Double(latitude1));
        Coordenada cooLongitud1 = new Coordenada(new Double(longitude));
        Coordenada cooLongitud2 = new Coordenada(new Double(longitude1));
        System.out.println(date1);
        System.out.println(date2);
        if(date1==null&&date2==null){
            return "fechas.xhtml";
        }
        java.util.Date date12 = new Date();
        java.util.Date date22 = new Date();
        String reporte =gos.generarReporte(cooLatitud1, cooLatitud2, cooLongitud1, cooLongitud2, date1, date2);
        String[] datos=reporte.split(":");
        System.out.println(reporte);
        presion=datos[0];
        velocidad=datos[1];
        direccion=datos[2];
        temperatura=datos[3];
        humedad=datos[4];
        tempAgua=datos[5];
        cantidad=datos[6];

        return "reporteGenerado.xhtml";
    }
    private String presion;
    private String velocidad;
    private String direccion;
    private String temperatura;
    private String humedad;
    private String cantidad;
    protected String tempAgua;

    /**
     * Get the value of tempAgua
     *
     * @return the value of tempAgua
     */
    public String getTempAgua() {
        return tempAgua;
    }

    /**
     * Set the value of tempAgua
     *
     * @param tempAgua new value of tempAgua
     */
    public void setTempAgua(String tempAgua) {
        this.tempAgua = tempAgua;
    }


    /**
     * Get the value of cantidad
     *
     * @return the value of cantidad
     */
    public String getCantidad() {
        return cantidad;
    }

    /**
     * Set the value of cantidad
     *
     * @param cantidad new value of cantidad
     */
    public void setCantidad(String cantidad) {
        this.cantidad = cantidad;
    }

    /**
     * Get the value of humedad
     *
     * @return the value of humedad
     */
    public String getHumedad() {
        return humedad;
    }

    /**
     * Set the value of humedad
     *
     * @param humedad new value of humedad
     */
    public void setHumedad(String humedad) {
        this.humedad = humedad;
    }

    /**
     * Get the value of temperatura
     *
     * @return the value of temperatura
     */
    public String getTemperatura() {
        return temperatura;
    }

    /**
     * Set the value of temperatura
     *
     * @param temperatura new value of temperatura
     */
    public void setTemperatura(String temperatura) {
        this.temperatura = temperatura;
    }

    /**
     * Get the value of direccion
     *
     * @return the value of direccion
     */
    public String getDireccion() {
        return direccion;
    }

    /**
     * Set the value of direccion
     *
     * @param direccion new value of direccion
     */
    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    /**
     * Get the value of velocidad
     *
     * @return the value of velocidad
     */
    public String getVelocidad() {
        return velocidad;
    }

    /**
     * Set the value of velocidad
     *
     * @param velocidad new value of velocidad
     */
    public void setVelocidad(String velocidad) {
        this.velocidad = velocidad;
    }

    /**
     * Get the value of presion
     *
     * @return the value of presion
     */
    public String getPresion() {
        return presion;
    }

    /**
     * Set the value of presion
     *
     * @param presion new value of presion
     */
    public void setPresion(String presion) {
        this.presion = presion;
    }
}
 

